//package com.study.springbootstudytwo.listener;
//
//
//import com.alibaba.excel.read.listener.ReadListener;
//import com.alibaba.excel.util.ListUtils;
//import com.study.springbootstudytwo.entities.User;
//
//import java.util.List;
//
//public class EmployeeListener implements ReadListener<User> {
//
//    /**
//     * 每隔5条存储数据库，实际使用中可以100条，然后清理list ，方便内存回收
//     */
//    private static final int BATCH_COUNT = 100;
//    /**
//     * 缓存的数据
//     */
//    private List<User> cachedDataList = ListUtils.newArrayListWithExpectedSize(BATCH_COUNT);
//
//    private IEmployeeService employeeService;
//
//
//    public EmployeeListener(IEmployeeService employeeService){
//        this.employeeService = employeeService;
//    }
//
//    //每一条数据解析都会进行调用
//    @Override
//    public void invoke(User employee, AnalysisContext analysisContext) {
//
//        cachedDataList.add(employee);
//        // 达到BATCH_COUNT了，需要去存储一次数据库，防止数据几万条数据在内存，容易OOM
//        if (cachedDataList.size() >= BATCH_COUNT) {
//            saveData();
//            // 存储完成清理 list
//            cachedDataList = ListUtils.newArrayListWithExpectedSize(BATCH_COUNT);
//        }
//    }
//
//    //所有的数据解析完后进行调用
//    @Override
//    public void doAfterAllAnalysed(AnalysisContext analysisContext) {
//        // 这里也要保存数据，确保最后遗留的数据也存储到数据库
//        saveData();
//
//    }
//
//    /**
//     * 加上存储数据库
//     */
//    private void saveData() {
//
//        employeeService.save(cachedDataList);
//
//    }
//}
